Wireless sharing of device resources allowing device storage needs to be wirelessly offloaded to other devices

ABSTRACT

Systems and methods for wireless sharing of device resources How device storage needs to be wirelessly offloaded to other devices. In a method, which may be implemented on a system, storage is shared among devices by offloading storage needs of a first device to a second device among two devices coupled in a wireless network. In offloading the storage needs, data for use at the first device may be transmitted over the wireless network to be stored at the second device.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No. 13/605,475 entitled “WIRELESS SHARING OF DEVICE RESOURCES ALLOWING DEVICE STORAGE NEEDS TO BE WIRELESSLY OFFLOADED TO OTHER DEVICES,” which was filed Sep. 6, 20112. The 13/605,475 application is a divisional application of U.S. patent application Ser. No. 13/451,327 entitled “SHARED RESOURCE AND VIRTUAL RESOURCE MANAGEMENT !IN A NETWORKED ENVIRONMENT,” which was filed Apr. 19, 2012. The 13/451,327 application, now abandoned, claimed the benefit of U.S. Provisional Patent Application No. 61476,976 entitled “VIRTUAL MEMORY, SHARED MEMORY MANAGEMENT AND SOCIAL CACHING BASED ON GEO-LOCATION IN A NETWORKED ENVIRONMENT,” which was filed on Apr. 19, 2011. Accordingly, this application claims a priority of Apr. 19, 2011 by way of continuity through the above referenced applications, the contents of which are all incorporated by reference herein.

BACKGROUND

With the increase of computing power and enhancement in functionality, every day electronic devices have expanded in features to take upon multiple functions, beyond their traditional uses. For example, our cellular phones have become our digital cameras, our Smartphones have become our video recorders, in some cases replaced or used in lieu of laptop computers, tablets have now replaced some uses of laptops, and our mobile devices such as laptops or mobile phones now drive or are used to control home video/audio systems.

With this expansion in computing power and device capability is the need for additional storage (e.g., memory, USB or hard disk, etc.). Increasingly more types of devices handle, process, and/or are used for accessing, capturing, or viewing media content the storage needs for these devices have exploded and traditional storage mechanisms have not kept up with data needs to ensure or support the user experience enhancements that should accompany the growth in computing power and device functionality expansions.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 depicts an example diagram showing resource sharing and/or virtual resource management among any electronic device in a networked environment.

FIGS. 2A-B depict example diagrams showing how virtual memory sharing and database management enables peer-to-peer distribution of information in a network among any type of electronic devices and among mobile devices such as mobile phones/smart phones or tablet devices.

FIG. 3 depicts a block diagram illustrating an example of components in a host server which is able to manage resource sharing and generation of virtual resources from devices in a networked environment.

FIG. 4 depicts a table showing an example state profile for a device having location-based state profiles for resource sharing and pooling with other devices.

FIGS. 5A-B depict a table showing virtual resource allocation to a given device based on device state,

FIG. 6 depicts an example flow chart for storage sharing among two devices.

FIG. 7 depicts an example flow chart for resource sharing among devices in a network.

FIG. 8 depicts an example flow chart for managing sharing of physical memory among devices.

FIG. 9 shows a diagrammatic representation of a machine in the example form of a computer system within which a set of instructions, for causing the machine to perform any one or more of the methodologies discussed herein, may be executed.

DETAILED DESCRIPTION

The following description and drawings are illustrative and are not to be construed as limiting. Numerous specific details are described to provide a thorough understanding of the disclosure. However, in certain instances, well-known or conventional details are not described in order to avoid obscuring the description. References to one or an embodiment in the present disclosure can be, but not necessarily are, references to the same embodiment; and, such references mean at least one of the embodiments.

Reference in this specification to “one embodiment” or “an embodiment” means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the disclosure. The appearances of the phrase “in one embodiment” in various places in the specification are not necessarily all referring to the same embodiment, nor are separate or alternative embodiments mutually exclusive of other embodiments. Moreover, various features are described which may be exhibited by some embodiments and not by others. Similarly, various requirements are described which may be requirements for some embodiments but not other embodiments.

The terms used in this specification generally have their ordinary meanings in the art, within the context of the disclosure, and in the specific context where each term is used. Certain terms that are used to describe the disclosure are discussed below, or elsewhere in the specification, to provide additional guidance to the practitioner regarding the description of the disclosure. For convenience, certain terms may be highlighted, for example using italics and/or quotation marks. The use of highlighting has no influence on the scope and meaning of a term; the scope and meaning of a term is the same, in the same context, whether or not it is highlighted. It will be appreciated that same thing can be said in more than one way.

Consequently, alternative language and synonyms may be used for any one or more of the terms discussed herein, nor is any special significance to be placed upon whether or not a term is elaborated or discussed herein. Synonyms for certain terms are provided. A recital of one or more synonyms does not exclude the use of other synonyms. The use of examples anywhere in this specification including examples of any terms discussed herein is illustrative only, and is not intended to further limit the scope and meaning of the disclosure or of any exemplified term. Likewise, the disclosure is not limited to various embodiments given in this specification.

Without intent to limit the scope of the disclosure, examples of instruments, apparatus, methods and their related results according to the embodiments of the present disclosure are given below. Note that titles or subtitles may be used in the examples for convenience of a reader, which in no way should limit the scope of the disclosure. Unless otherwise defined, all technical and scientific terms used herein have the same meaning as commonly understood by one of ordinary skill in the art to which this disclosure pertains. In the case of conflict, the present document, including definitions will control,

Embodiments of the present disclosure include systems and methods for shared resource and virtual resource management in a networked environment.

FIG. 1 depicts an example diagram showing resource sharing and/or virtual resource management among any electronic device 102A-N in a networked environment 150.

The client devices 102A-N can be any system and/or device, and/or any combination of devices/systems that is able to establish a connection, including wired, wireless, cellular connections with another device, a server and/or other systems such as host server 100 and/or any additional servers. Client devices 102A-N can typically include a display and/or other output functionalities to present information and data exchanged between among the devices 102A-N and/or the host server 100.

For example, the client devices 102A-N can include mobile, hand held or portable devices or non-portable devices and can be any of, but not limited to, a server desktop, a desktop computer, a computer cluster, or portable devices including, a notebook, a laptop computer, a handheld computer, a palmtop computer, a mobile phone, a cell phone, a smart phone, a PDA, a Blackberry device, a Treo, a handheld tablet (e.g. an iPad), a hand held console, a hand held gaming device or console, an iPhone, a TV set, a setup box, a cable box, gaming consoles, home audio system components, and/or any other portable, mobile, hand held devices, etc. in one embodiment, the client devices 102A-N, host server 100, are coupled via a network 106. In some embodiments, the devices 102A-N and host server 100 may be directly connected to one another.

The devices 102A-N need not be limited to a computer or cell phone and can generally be any electronic device with memory or other forms of storage. The devices 102A-N may or may not have its own processing/computing power/functionality and can include storage devices (e.g., USB flash drive, disk drive, memory unit, etc.), or thin clients or dumb devices, or a TV set, or any other electronic devices (e.g., home appliances, vehicles, etc.) equipped with network capabilities (e.g., wireless or wired network capabilities) such that its storage or other types of resources can be accessed by other devices 102A-N and/or the host server 100. The client devices A-N may or may not include user interfaces and/or input/output mechanisms.

The input mechanisms on client devices 102A-N can include touch screen keypad (including single touch, multi-touch, gesture sensing in 2D or 3D, etc.), a physical keypad, a mouse, a pointer, a track pad, motion detector (e.g., including 1-axis, 2-axis, 3-axis accelerometer, etc.), a light sensor, capacitance sensor, resistance sensor, temperature sensor, proximity sensor, a piezoelectric device, device orientation detector (e.g., electronic compass, tilt sensor, rotation sensor, gyroscope, accelerometer), or a combination of the above.

In one embodiment, client devices 102A-N communicate with the host server 100 and/or each other over network 106, which can be a cellular network. In general, the network 106, over which the client devices 102A-N, the host server 100 communicate, may be a cellular network, a telephonic network, an open network, such as the Internet, or a private network, such as an intranet and/or the extranet, or any combination thereof. For example, the Internet can provide file transfer, remote log in, email, news, RSS, cloud-based services, instant messaging, visual voicemail, push mail, VOIP, and other services through any known or convenient protocol, such as, but is not limited to the TCP/IP protocol, Open System Interconnections (OSI), FTP, UPnP, iSCSI, NSF, ISDN, PDH, RS-232, SDH, SONET, etc.

The network 106 can be any collection of distinct networks operating wholly or partially in conjunction to provide connectivity to the client devices 102A-N and the host server 100 and may appear as one or more networks to the serviced systems and devices. In one embodiment, communications to and from the client devices 102 can be achieved by, an open network, such as the Internet, or a private network, such as an intranet and/or the extranet. In one embodiment, communications can be achieved by a secure communications protocol, such as secure sockets layer (SSL), or transport layer security (TLS).

In addition, communications can be achieved via one or more networks, such as, but are not limited to, one or more of WiMax, a Local Area Network (LAN), Wireless Local Area Network (WLAN), a Personal area network (PAN), a Campus area network (CAN), a Metropolitan area network (MAN), a Wide area network (WAN), a Wireless wide area network (WWAN), enabled with technologies such as, by way of example, Global System for Mobile Communications (GSM), Personal Communications Service (PCS), Digital Advanced Mobile Phone Service (D-Amps), Bluetooth, Wi-Fi, Fixed Wireless Data, 2G, 2.5G, 3G, 4G, IMT-Advanced, pre-4G, 3G LTE, 3GPP LTE, LTE Advanced, mobile WiMax, WiMax 2, WirelessMAN-Advanced networks, enhanced data rates for GSM evolution (EDGE), General packet radio service (GPRS), enhanced GPRS, iBurst, UNITS, HSPDA, HSUPA, HSPA, UMTS-TDD, 1×RTT, EV-DO, messaging protocols such as, TCPIP, SMS, MMS, extensible messaging and presence protocol (XIMPP), real time messaging protocol (RTMP), instant messaging and presence protocol (IMPP), instant messaging, USSD, IRC, or any other wireless data networks or messaging protocols.

Inn One embodiment of the present disclosure includes resource sharing and virtual resource management such as virtual memory and virtual memory sharing among multiple devices 102A-N, etc. having local storage such as memory, hard disk storage, flash memory, database storage, and/or cache. The devices 102A-N, etc. can generally be any device or electronic appliance, unit, gadget, and can also include mobile devices such as mobile Smart phones, PDA, cellular phones, tablets, PCs, laptops and the like.

The resources such as virtual memory/virtual storage can be aggregated from the storage components (e.g., database, memory, hard disk, flash, etc.) of each device 102A-N, etc. and shared for use across each device such that each device 102A-N is not limited in storage or memory capacity to the physical size of the local memory present on each device (e.g., a larger pool of resources can be leveraged by each device and information can be stored and shared more efficiently). The virtual resource or virtual memory includes various aspects of shared network, resource, database elements, and other information, in addition to the physical memory located and aggregated from each device 102A-N, etc.

Virtual resources/memory can also be used to manage shared data, for example, such that any shared information among the devices 102A-N, etc. need not be stored multiple times on multiple devices. Specifically, virtual memory and shared databases can be allocated based on certain commonalities between devices 102A-N, etc. Examples of commonalities include co-location, functionality, features, associated users, software capabilities, hardware capabilities, etc. Database parameters and/or shared database parameters can be used to track commonalities between devices 102A-N, etc. as a temporal function, spatial function, or a combination thereof.

Virtual memory/virtual resources need not be used for sharing information, For example, virtual memory may simply be a pool of aggregated memory or cache for use by each device (e.g., co-located device) when there is a need (e.g., due to constraints of local storage, memory space). For example, a virtual memory manager may determine that one device in a particular shared memory environment is running low on physical memory or storage space and thus allocate some memory on another device or other devices for temporary or tong term use by the device running low on memory. Such allocation and assignment can be location based. In one embodiment, device functionality may be enabled or changed based on location or co-location, in accordance with information stored in the virtual memory manager (e.g., state-location-functionality mapping for various devices tracked and managed by a virtual memory manager).

Such resource management and sharing by way of virtual memory allocation and management enables machine-to-machine dissemination of information and/or shared information for devices 102A-N, etc. having certain commonalities that would cause the device to need to access, have the need to store the same information. Machine-to-machine, or device to device, or peer-to-peer sharing/communication of information, not only provides savings on storage space but also takes the load off a backend server and radio network or other network which now can provide the updated data or content to one device. The updated content can then be provided by the one device to other devices 102A-N, etc. in the network environment 150.

In one embodiment, the host server 100 can manage and/or track the resource sharing among at least some of the devices 102A-N. For example, the host server 100 can track or determine availability/status/state of physical memory and allocate resources (e.g., memory, database, hard disk) on one device to another device, based on various criteria (e.g., device software/hardware compatibility, co-location, similar functionality, similar installed application, same users, etc.). The host server 100 can track the sharing of resources among devices 102A-N, use of the shared resources and availability. The components of the host server 100 are further illustrated in the example of FIG. 3.

Example configurations for peer-to-peer information sharing in a network enabled via resource sharing and caching are illustrated in FIG. 2A-B. FIG. 2A-B depicts example diagrams showing how resource sharing including memory sharing and database management enables peer-to-peer distribution of information in a network among any type of electronic devices 202A-N and among mobile devices such as mobile phones/smart phones or tablet devices 222A-N.

Device X 202A can receive, content or updates from an external device (not shown in FIG. 2A) such as the host server (e.g., host server 100, 200, in the examples of FIG. 1-2), or a content provider/application server via a cellular network or other network. The device 202A belongs to an environment where memory or other resources are is shared and allocated among multiple devices (Device X, Device Y, Device Z, etc.). Based on some commonality, for example, temporal, geographical, functional, similarities, the information received by Device 202A may be relevant to one or more of the other Devices 202B, etc, in the same networked environment of shared resources/memory/storage.

The information can then be provided to (push, pull, or a combination thereof) by Device X, to any of the other Devices which may need the same information. The other devices (e.g., Device Y, Z, N, etc.) now need not request and receive the same information from a host server or app server/content provider. Devices can share information in the virtual memory pool using any communications interface including but not limited to cellular, mobile network, Wifi, Bluetooth, LAN, USB, Firewire, etc. Commonalities can include location or geo-location since locations may generally be associated with certain useful parameters.

Devices located in a kitchen versus a bedroom or a car may need different parameters and/or information. For example, multiple devices (e.g., a stove, a microwave, refrigerator, etc) may have the need for information such as a timer information, ambient information, stove, time left to cook, etc. Devices located in a vehicle may have a need for different types of parameters, such as contacts on contact book, maps, GPS data, driver-specific information, etc.

Furthermore, devices (e.g., Smart phones or mobile phones 222A-N) with same operating systems use same types of OS files and may share such information. Similarly, devices with the same applications installed can share some application program files, and/or user data if the users are also the same. Similar/same temporal (time of a request, time of a poll, day of week, time of day, etc.) and/or spatial (e.g., co-location, same/similar geo-location) characteristics can result in some shared information and content among mobile devices 222A-N; such parameters and information sharing can be tracked by proxies on each device or on one or more devices in a shared resource environment or shared memory environment.

FIG. 3 depicts a block diagram illustrating an example of components in a host server 300 (e.g., server 100 or 200 of the examples of FIG. 1-FIG 2) which is able to manage resource sharing and generation of virtual resources from devices in a networked environment.

One embodiment of the host server 300 includes, a network interface 320, a virtual memory manager 304, a virtual storage manager 306, a distributed database manager 308, a device state tracking engine 312 having a device state profile generator 313, and/or a device commonality detector 314.

Some or all of the components of the host server 300 can, in part or in whole, or the associated functions thereof, be performed by the devices from which virtual resources are aggregated. The managing/tracking of the virtual resources and the resource sharing can in part or in whole be performed by the host server 300. Additional or less components/modules/engines can be included in the host server 300 and each illustrated component.

The resource sharing manager 302 can, for example, identify or detect available resources among devices. The resource sharing manager 302 can also detect, or track the state/status of resources among devices in managing pooled virtual resources or in locating available resources to be shared. For example, the virtual memory manager 304 can manage memory sharing across devices, the virtual storage manager can manage storage cross devices and the database manager can manage database, database element or parameter sharing across devices or systems.

In some instances, devices can take upon different states under different conditions (e.g., time, location, device operation mode, application which is launched or running, etc.). Device state can affect resource sharing and as such can be tracked by tracking engine 312. For example, when a device is in different physical locations, it thus has the ability to share resources with different sets of devices. When a device is running a given application, certain information may be suited to access, retrieval or storage with certain other devices running the same or similar applications The device state profile generator 313 can thus generate a device state profile for use in pooling resources and allocating resources to other devices at a given point in time and/or location. An example of a device state profile 402 based on device location is illustrated in the example of FIG. 4.

Furthermore, since device resources can be shared wirelessly based on commonalities, the device commonality detector 314 can detect any of the commonalities including, one or more of, functionality, device type, location, or user.

The network interface 320 can be a networking module that enables the device 250 to mediate data in a network with an entity that is external to the host server 250, through any known and/or convenient communications protocol supported by the host and the external entity, The network interface 320 can include one or more of a network adaptor card, a wireless network interface card (e.g., SMS interface, WiFi interface, interfaces for various generations of mobile communication standards including hut not limited to 1G, 2G, 3G, 3.5G, 4G, LTE, etc.,), Bluetooth, a router, an access point, a wireless router, a switch, a multilayer switch, a protocol converter, a gateway, a bridge, bridge router, a hub, a digital media receiver, and/or a repeater.

As used herein, a “module,” “a manager,” a “handler,” a “detector,” an “interface,” or an “engine” includes a general purpose, dedicated or shared processor and, typically, firmware or software modules that are executed by the processor, Depending upon implementation-specific or other considerations, the module, manager, hander, or engine can be centralized or its functionality distributed. The module, manager, hander, or engine can include general or special purpose hardware, firmware, or software embodied in a computer-readable (storage) medium for execution by the processor. As used herein, a computer-readable medium or computer-readable storage medium is intended to include all mediums that are statutory (e.g., in the United States, under 35 U.S.C. 101) and to specifically exclude all mediums that are non-statutory in nature to the extent that the exclusion is necessary for a claim that includes the computer-readable (storage) medium to be valid. Known statutory computer-readable mediums include hardware (e.g., registers, random access memory (RAM), non-volatile (NV) storage, to name a few), but may or may not be limited to hardware.

FIG. 4 depicts a table showing an example state profile 402 for a device having location-based state profiles for resource sharing and pooling with other devices.

Note that device state profiles, in addition to being location-based, can also be time-based or include a timing parameter. Device state profiles can also include information regarding device state (e.g., on, off, background, foreground), current user, applications installed, applications launched, etc.

FIG. 5A-B depicts tables showing virtual resource allocation to a given device based on device state. Table 502 illustrates virtual memory allocation to Device X including Device X's own memory and those of other devices allocated to Device X for each state (state profiles 1-5) of device X. Table 522 illustrates database allocation to device X for each state (state profile 1-5) including Device X's, own database and those of other devices (Device 2, 3, 5, 6, and 7) allocated to Device X

FIG. 6 depicts an example flow chart for storage sharing among two devices.

In process 602, storage needs of a first device are offloaded to a second device among two devices coupled in a wireless network. The storage needs can be determined from various scenarios, including by way of example, lack of availability of physical storage space on the first device, and/or availability of physical storage space on the second device. Storage needs can also be determined from shared data or information between the two devices.

In one embodiment, the data can be shared as a result of co-location of the two devices, or other shared commonality, such as similar/same functionality, same user, same user groups, same applications installed, same/similar operating systems, similar network services providers, etc. In process 604, data for use at the first device is transmitted over the wireless network to be stored at the second device. The storage that is shared can include databases, memory (volatile and/or non-volatile), SD card, flash memory, hard disk storage, etc.

In process 606, which portion of the data for use at the first device is stored at the second device is tracked. The tracking can be performed by the first device, and/or by a server in the wireless network (e.g., host server 100 shown in the example if FIG. 1). In process 608, storage is shared among two devices in the wireless network. Note that the wireless network can include any wireless network including, by way of example but not limitation, Wifi, office network, or home network, mobile network or cellular network, Bluetooth or other near field wireless connections. In some instances, the devices can also share some or all storage/resources via a wired connections some or all of the times.

FIG. 7 depicts an example flow chart for resource sharing among devices in a network.

In process 702, a first device, wirelessly accesses device resources of a second device in the network. In process 704, data for use by the first device is retrieved or stored using the device resources of a second device wirelessly accessed by the first device. In process 706, the second device, wirelessly accesses device resources of the first device in the network. In process 708, data for use by the second device is retrieved or stored using the device resources of the first device wirelessly accessed by the second device.

The devices among which resources are shared can be selected by random or can be selected based on some commonality or need. For example, the devices among which resources are shared are similar or same types of devices (e.g., smart phones, laptops, general purpose appliances, vehicles, home appliances, general purpose electronics, or storage devices, etc.). The devices among which resources are shared can have same or similar functionalities (e.g., are mobile phones, tablets, Smartphones, are cellular phones, are servers, run on Windows OS, run on OS X, runs on iOS), have certain applications installed, etc.

In one embodiment, the devices among which resources are shared are co-located or are geographically proximate to one another and/or are connected to or have access to a same network (e.g., Wifi network, home network, office network, Internet service provider, cellular network, Bluetooth network, same network operator, etc.). In some instances, the devices among which resources are shared wirelessly have a same user or groups of users. For example, a user's mobile phone may share resources with the same user's laptop computer or tablet when in close proximity such that data can be cross accessed.

FIG. 8 depicts an example flow chart for managing sharing of physical memory among devices.

In process 802, an aggregation of the physical memory of devices is generated. In process 804, a virtual memory pool is created from the aggregation of physical memory. The aggregation of physical memory into the virtual memory pool can be performed by a server managing the resource sharing among the devices, or performed by one or more of the devices among those sharing resources. The server can also manage, track, the resource/memory sharing among some of all devices, for example, thin clients or storage devices with little or no processing capabilities.

In process 806, portions of the virtual memory pool are allocated to a given device among the devices. The allocation can be performed by a server or by any of the devices among the devices sharing resources. In process 808, the portions of the virtual memory pool allocated to the given device, are accessed by the given device over a wireless connection (e.g., Wifi, cellular, Bluetooth, etc.) for data retrieval and storage.

In one embodiment, the portions of the virtual memory pool allocated to the one device include physical memory located on other devices among the devices. The other devices having the physical memory which is a part of the portions of the virtual memory pool allocated to the one device, can, for example, share a common feature with the one device. The common feature can include one or more of, functionality, device type, location, or user.

FIG. 9 shows a diagrammatic representation of a machine in the example form of a computer system within which a set of instructions, for causing the machine to perform any one or more of the methodologies discussed herein, may be executed.

In alternative embodiments, the machine operates as a standalone device or may be connected (e.g., networked) to other machines. In a networked deployment, the machine may operate in the capacity of a server or a client machine in a client-server network environment, or as a peer machine in a peer-to-peer (or distributed) network environment.

The machine may be a server computer, a client computer, a personal computer (PC), a user device, a tablet PC, a laptop computer, a set-top box (STB), a personal digital assistant (PDA), cellular telephone, an iPhone, an iPad, a Blackberry, a processor, a telephone, a web appliance, a network router, switch or bridge, a console, a hand-held console, a (hand-held) gaming device, a music player, any portable, mobile, hand-held device, or any machine capable of executing a set of instructions (sequential or otherwise) that specify actions to be taken by that machine.

While the machine-readable medium or machine-readable storage medium is shown in an exemplary embodiment to be a single medium, the term “machine-readable medium” and “machine-readable storage medium” should be taken to include a single medium or multiple media (e.g., a centralized or distributed database, and/or associated. caches and servers) that store the one or more sets of instructions. The term “machine-readable medium” and “machine-readable storage medium” shall also be taken to include any medium that is capable of storing, encoding or carrying a set of instructions for execution by the machine and that cause the machine to perform any one or more of the methodologies of the presently disclosed technique and innovation.

In general, the routines executed to implement the embodiments of the disclosure, may be implemented as part of an operating system or a specific application, component, program, object, module or sequence of instructions referred to as “computer programs.” The computer programs typically comprise one or more instructions set at various times in various memory and storage devices in a computer, and that, when read and executed by one or more processing units or processors in a computer, cause the computer to perform operations to execute elements involving the various aspects of the disclosure.

Moreover, while embodiments have been described in the context of filly functioning computers and computer systems, those skilled in the art will appreciate that the various embodiments are capable of being distributed as a program product in a variety of forms, and that the disclosure applies equally regardless of the particular type of machine or computer-readable media used to actually effect the distribution.

Further examples of machine-readable storage media, machine-readable media, or computer-readable (storage) media include, but are not limited to, recordable type media such as volatile and non-volatile memory devices, floppy and other removable disks, hard disk drives, optical disks (e.g., Compact Disk Read-Only Memory (CD ROMS), Digital Versatile Disks, (DVDs), etc.), among others, and transmission type media such as digital and analog communication links.

The network interface device enables the machine 1100 to mediate data in a network with an entity that is external to the host server, through any known and/or convenient communications protocol supported by the host and the external entity. The network interface device can include one or more of a network adaptor card, a wireless network interface card, a router, an access point, a wireless router, a switch, a multilayer switch, a protocol converter, a gateway, a bridge, bridge router, a hub, a digital media receiver, and/or a repeater.

The network interface device can include a firewall which can, in some embodiments, govern and/or manage permission to access/proxy data in a computer network, and track varying levels of trust between different machines and/or applications. The firewall can be any number of modules having any combination of hardware and/or software components able to enforce a predetermined set of access rights between a particular set of machines and applications, machines and machines, and/or applications and applications, for example, to regulate the flow of traffic and resource sharing between these varying entities. The firewall may additionally manage and/or have access to an access control list which details permissions including for example, the access and operation rights of an object by an individual, a machine, and/or an application, and the circumstances under which the permission rights stand.

Other network security functions can be performed or included in the functions of the firewall, can be, for example, but are not limited to, intrusion-prevention, intrusion detection, next-generation firewall personal firewall, etc. without deviating from the novel art of this disclosure.

Unless the context clearly requires otherwise, throughout the description and the claims, the words “comprise,” “comprising,” and the like are to be construed in an inclusive sense, as opposed to an exclusive or exhaustive sense; that is to say, in the sense of “including, but not limited to.” As used herein, the terms “connected,” “coupled,” or any variant thereof, means any connection or coupling, either direct or indirect, between two or more elements; the coupling of connection between the elements can be physical, logical, or a combination thereof. Additionally, the words “herein,” “above,” “below,” and words of similar import, when used in this application, shall refer to this application as a whole and not to any particular portions of this application. Where the context permits, words in the above Detailed Description using the singular or plural number may also include the plural or singular number respectively. The word “or,” in reference to a list of two Of more items, covers all of the following interpretations of the word: any of the items in the list, all of the items in the list, and any combination of the items in the list.

The above detailed description of embodiments of the disclosure is not intended to be exhaustive or to limit the teachings to the precise form disclosed above. While specific embodiments of, and examples for, the disclosure are described above for illustrative purposes, various equivalent modifications are possible within the scope of the disclosure, as those skilled in the relevant art will recognize. For example, while processes or blocks are presented in a given order, alternative embodiments may perform routines having steps, or employ systems having blocks, in a different order, and sonic processes or blocks may be deleted, moved, added, subdivided, combined, and/or modified to provide alternative or subcombinations. Each of these processes or blocks may be implemented in a variety of different ways. Also, while processes or blocks are at times shown as being performed in series, these processes or blocks may instead be performed in parallel, or may be performed at different times, Further, any specific numbers noted herein are only examples: alternative implementations may employ differing values or ranges.

The teachings of the disclosure provided herein can be applied to other systems, not necessarily the system described above. The elements and acts of the various embodiments described above can be combined to provide further embodiments.

Any patents and applications and other references noted above, including any that may be listed in accompanying filing papers, are incorporated herein by reference. Aspects of the disclosure can be modified, if necessary, to employ the systems, functions, and concepts of the various references described above to provide yet further embodiments of the disclosure.

These and other changes can be made to the disclosure in light of the above Detailed Description. While the above description describes certain embodiments of the disclosure, and describes the best mode contemplated, no matter how detailed the above appears in text, the teachings can be practiced in many ways. Details of the system may vary considerably in its implementation details, while still being encompassed by the subject matter disclosed herein. As noted above, particular terminology used when describing certain features or aspects of the disclosure should not be taken to imply that the terminology is being redefined herein to be restricted to any specific characteristics, features, or aspects of the disclosure with which that terminology is associated. In general, the terms used in the following claims should not be construed to limit the disclosure to the specific embodiments disclosed in the specification, unless the above Detailed Description section explicitly defines such terms. Accordingly, the actual scope of the disclosure encompasses not only the disclosed embodiments, but also all equivalent ways of practicing or implementing the disclosure under the claims.

While certain aspects of the disclosure are presented below in certain claim forms, the inventors contemplate the various aspects of the disclosure in any number of claim forms. For example, while only one aspect of the disclosure is recited as a means-plus-function claim under 35 U.S.C. §112, ¶6, other aspects may likewise be embodied as a means-plus-function claim, or in other forms, such as being embodied in a computer-readable medium. (Any claims intended to be treated under 35 U.S.C. §112, ¶6 will begin with the words “means for.”) Accordingly, the applicant reserves the right to add additional claims after filing the application to pursue such additional claim forms for other aspects of the disclosure. 

What is claimed is:
 1. A method of storing data in aggregate memory storage among multiple devices, the method comprising: generating a state profile of a first device at a location, the first device having a memory storage, the state profile of the first device indicating at least the location of the first device and a status of the memory storage of the first device; generating a state profile of a second device at a location, the second device having a memory storage, the state profile of the second device indicating at least the location of the second device and a status of the memory storage of the second device; allocating, at least according to the state profile of the first device, a portion of the memory storage of the first device as a first portion of an aggregate memory storage; allocating, at least according to the state profile of the second device, a portion of the memory storage of the second device as a second portion of the aggregate memory storage; storing first data in the portion of the memory storage of the first device allocated as the first portion of the aggregate memory storage; storing second data in the portion of the memory storage of the second device allocated as the second portion of the aggregate memory storage; and accessing by the first device the second data stored in the memory storage of the second device.
 2. The method of claim 1, wherein said allocating a portion of the memory storage of the second device as a second portion of an aggregate memory storage is performed by the first device.
 3. The method of claim 2, wherein accessing the second data by the first device comprises wirelessly transmitting by the second device at least a portion of the second data from the second device directly to the first device.
 4. The method of claim 3, wherein said allocating a portion of the memory storage of the second device as a second portion of an aggregate memory storage is performed when the location of the second device is within a defined proximity of the location of the first device.
 5. The method of claim 2, wherein: the state profile of the first device indicates whether the first device is running a particular application; the state profile of the second device indicates whether the second device is running the particular application; and said allocating a portion of the memory storage of the second device as a second portion of an aggregate memory storage is performed when the first device and second device are running the particular application.
 6. The method of claim 2, wherein generating the state profile of the first device and generating the state profile of the second device are performed by the first device.
 7. The method of claim 6, wherein allocating a portion of the memory storage of the second device as a second portion of the aggregate memory storage is performed when available memory of the memory storage of the first device is insufficient to store both the first data and the second data.
 8. The method of claim 1, wherein accessing the second data by the first device comprises: transmitting by the second device at least a portion of the second data from the second device to a third device; and transmitting the portion of the second data from the third device to the first device.
 9. The method of claim 8, wherein said allocating a portion of the memory storage of the second device as a second portion of an aggregate memory storage is performed by the third device.
 10. The method of claim 1, wherein: storing the first data in the portion of the memory storage of the first device comprises transmitting the first data to the first device via a cellular telephony network; storing the second data in the portion of the memory storage of the second device comprises transmitting the second data to the second device via at least the cellular telephony network; and accessing by the first device the second data stored in the memory storage of the second device comprises transmitting at least a portion of the second data from the second device to the first device.
 11. The method of claim 10, wherein transmitting at least a portion of the second data from the second device to the first device comprises transmitting at least the portion of the second data from the second device directly to the first device via a near field wireless connection.
 12. The method of claim 10, wherein transmitting at least a portion of the second data from the second device to the first device comprises transmitting at least the portion of the second data from the second device to the first device via a Will network.
 13. The method of claim 10, wherein transmitting at least a portion of the second data from the second device to the first device comprises transmitting at least the portion of the second data from the second device to the first device via a Bluetooth connection.
 14. A system that stores data aggregate memory storage among multiple devices, the system comprising: a first device, having a memory storage, at a location; a second device, having a memory storage, at a location; one or more state profile generators that generate a state profile of the first device and a state profile of the second device, the state profile of the first device indicating at least the location of the first device and a status of the memory storage of the first device, the state profile of the second device indicating at least the location of the second device and a status of the memory storage of the second device; a resource sharing allocator that allocates, at least according to the state profile of the first device, a portion of the memory storage of the first device as a first portion of an aggregate memory storage, and allocates, at least according to the state profile of the second device, a portion of the memory storage of the second device as a second portion of the aggregate memory storage; wherein the first device stores first data in the portion of the memory storage of the first device allocated as the first portion of the aggregate memory storage; wherein the second device stores second data in the portion of the memory storage of the second device allocated as the second portion of the aggregate memory storage; and wherein the first device accesses the second data stored in the memory storage of the second device.
 15. The system of claim 14, wherein the first device comprises the resource sharing allocator,
 16. The system of claim 14, the second device transmits at least a portion of the second data from the second device directly to the first device.
 17. The system of claim 14, wherein the resource sharing allocator allocates the portion of the memory storage of the second device as the second portion of the aggregate memory storage when the location of the second device is within a defined proximity of the location of the first device.
 18. The method of claim 14, wherein the resource sharing allocator allocates the portion of the memory storage of the second device as the second portion of the aggregate memory storage when available memory of the memory storage of the first device is insufficient to store both the first data and the second data.
 19. The system of claim 14, wherein: the first device receives the first data via a cellular telephony network; the second device receives the second data via at least the cellular telephony network; and the second device transmits at least a portion of the second data to the first device.
 20. The system of claim 19, wherein the second device transmits the portion of the second data to the first device via at least one of a near field wireless connection, a Wifi network, or a Bluetooth connection. 